package cn.iocoder.yudao.module.system.dal.mysql.menuweixin;

import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.system.controller.admin.menuweixin.vo.MenuWeixinListReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.menuweixin.MenuWeixinDO;
import org.apache.ibatis.annotations.Mapper;

import java.util.Collection;
import java.util.List;

/**
 * 微信菜单 Mapper
 *
 * @author 管理员
 */
@Mapper
public interface MenuWeixinMapper extends BaseMapperX<MenuWeixinDO> {

    default List<MenuWeixinDO> selectList(MenuWeixinListReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<MenuWeixinDO>()
                .eqIfPresent(MenuWeixinDO::getParentId, reqVO.getParentId())
                .likeIfPresent(MenuWeixinDO::getMenuName, reqVO.getMenuName())
                .eqIfPresent(MenuWeixinDO::getPermission, reqVO.getPermission())
                .eqIfPresent(MenuWeixinDO::getMenuType, reqVO.getMenuType())
                .eqIfPresent(MenuWeixinDO::getSort, reqVO.getSort())
                .eqIfPresent(MenuWeixinDO::getStatus, reqVO.getStatus())
                .betweenIfPresent(MenuWeixinDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(MenuWeixinDO::getId));
    }

    default MenuWeixinDO selectByParentIdAndMenuName(Long parentId, String menuName) {
        return selectOne(MenuWeixinDO::getParentId, parentId, MenuWeixinDO::getMenuName, menuName);
    }

    default Long selectCountByParentId(Long parentId) {
        return selectCount(MenuWeixinDO::getParentId, parentId);
    }

    default List<MenuWeixinDO> selectListByStatus(Collection<Integer> statuses) {
        return selectList(MenuWeixinDO::getStatus, statuses);
    }
}